//#define _CRT_SECURE_NO_WARNINGS
//
//#include <iostream>
//#include <string.h>
//#include <stdio.h>
//
//using namespace std;
//const int N = 100005;
//
//int a[N];
//
//void swap(int a[], int x, int y)
//{
//    a[x] ^= a[y];
//    a[y] ^= a[x];
//    a[x] ^= a[y];
//}
//
//void Reverse(int a[], int x, int y)
//{
//    while (x < y)
//        swap(a, x++, y--);
//}
//
//void Convert(int a[], int L, int M, int R)
//{
//    Reverse(a, L, M);
//    Reverse(a, M + 1, R);
//    Reverse(a, L, R);
//}
//
//void Merge(int a[], int L, int M, int R)
//{
//    int i = L;
//    int j = M + 1;
//    while (i < j && j <= R)
//    {
//        while (i < j && a[i] <= a[j])
//            i++;
//        int index = j;
//        while (j <= R && a[j] < a[i])
//            j++;
//        Convert(a, i, index - 1, j - 1);
//        i += j - index;
//    }
//}
//
//void Merge_Sort(int a[], int L, int R)
//{
//    if (L < R)
//    {
//        int M = L + (R - L) / 2;
//        Merge_Sort(a, L, M);
//        Merge_Sort(a, M + 1, R);
//        Merge(a, L, M, R);
//    }
//}
//
//int main()
//{
//    int a[10] = { 1,5,3,6,9,7,4,8,2,10 };
//        Merge_Sort(a, 0, 9);
//        for (int i = 0; i < 10; i++)
//            printf("%d%c", a[i], i == 9 ? '\n' : ' ');
//    return 0;
//}
////int main() {
////
////    int arr[10] = { 1,5,3,6,9,7,4,8,2,10 };
////    mergeByInplace(arr, 0, 9);
////    for (int i = 0; i < 10; ++i)
////    {
////        std::cout << arr[i] << " ";
////    }
////    return 0;
////}
//
////int main()
////{
////	int* pi = new int(10);
////	delete pi;
////
////	return 0;
////}
//
//
//
//
//
//
//
//
//
//
//
//
//
//
////class A
////{
////public:
////	virtual inline void Print()
////	{
////		std::cout << "A: virtual & inline" << std::endl;
////	}
////};
////
////class B :public A
////{
////public:
////	virtual inline void Print()
////	{
////		std::cout << "B: virtual & inline" << std::endl;
////
////	}
////};
//
////int main()
////{
////	B b;
////	A* a = &b;
////	a->Print();
////
////	return 0;
////}